Monas REAEME
暗号化アルゴリズムの種類、コードで何を行っているかなどを書いていく
僕自身の理解を深めるためにも必要
github
@app.post("/signup")
ユーザー認証とCryptreeのルートノードの作成を実行する
1,wallet addressをリクエストで送信
2,署名をする
一致するかの検証
3, ルートノードの作成
疑問:
この部分で署名をしないといけない理由ってなんだっけ?Yudai.icon
考えられるのは署名出来ない場合、所有していないアドレスで空間の作成ができるからか
Todo
DIDによる空間の作成
僕の方で出来そう
@app.post("/login")
signupで作成したルートノードにアクセスする
1, owner_data_map内にユーザーが登録されているかの確認
このマップにユーザーとCIDが紐づいている
このマップがどこにあるのかが重要(ちなみに現在は未知)
多分この部分がmameta.iconがどこかで状態を持つ必要があるって言ってた部分やと思う
やっぱり思うんやけど、CID(Root id)が分かれば呼び出せるんじゃないんかな?って思う ただルートノードとid(EOA, DID)を紐づけるにはどこかしら必要になるか
これDID Document内に出来たりせん???Yudai.icon*4
user_datais 何???Yudai.icon
2, CIDからIPFS上のユーザー情報を取得する
3, skでbk, dkを復号化する
4, 復号化したメタデータからCrypTreeNodeを作成してcurent_nodeとする
@app.post("/fetch")
指定したパスのデータをファイルシステムから安全に読み取る
1, ログインチェック
2, cryptree_cacheに指定されたパスが含まれるかをチェック
3, 子ノードが存在するかの確認 -> ない場合No data
4, CIDを使用して暗号化されたデータを取得
5, skでbk , dkを復号化
6, current_nodeの更新
@app.post("/upload")
暗号化されたファイルシステムにアップロードする
1, name, id, path, isDirectory, dataを渡す(file or directoryの属性を指定する)
2, ファイルの場合読み込む
3, 新しいノードを作成する
4, IPFSへアップロードする
current_node.add_nodeの更新
5, 親ノードを更新する
暗号化処理について:
Faileの場合、Fileの内容はfile_keyで暗号化される
IPFSにアップロードし、CIDをメタデータに格納する
鍵の管理:
それぞれの鍵は相互に暗号化されKeydata辞書に格納されている
data_key-> backLink_key-> subFolder_key
最適な保存場所はまだ決まっていない
疑問:
現状だとどのように実際に処理が行われているか分からない(どこで暗号化されるか)
バックエンド側で行っているYudai.icon
この部分は改善の余地があると思う(バック側よりフロントで行うべきだと思う)
Todo:
使用する暗号化アルゴリズムの選定
fernetではなくRSAなどの検討
ただ共有鍵じゃないといけないYudai.icon*2
@app.post("/reencrypt")
@app.post("/fetchkey")
@app.get("/share")
@app.get("/cacheclear")
それぞれのメタデータの中身
name
各ノードの名前(ファイル名、フォルダ名)
owner_id
EOAやDID
creation_data
ノードが作成された日時
parent
親の情報(暗号化されている)
child
子ノードに関する情報を含む
file_cid